package main

import "fmt"

func main() {
	//指针
	var a int = 10
	var ptr *int = &a
	fmt.Println(*ptr, ptr, &ptr) // 指针也有自己的地址，只不过存的也是地址

	//直接修改a值
	*ptr = 20
	fmt.Println(a, *ptr)

	//不分配空间时，p为nil
	var p *int
	fmt.Println(p)
	// p 是 *int 分配空间 且默认值为0
	var q = new(int)
	var r *int
	r = new(int)
	//此时r被分配了空间，r为一个地址
	fmt.Println(r)
	*r = 100
	*q = 10
	fmt.Println(*q, *r)
}
